package org.tnc.budget.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;
import org.tnc.budget.model.BudgetCenter;

/**
 * 预算中心管理器
 * 
 * @author houjj | 2011-4-4 下午04:05:55
 */
public interface BudgetManager {

	/**
	 * 查询所有的预算中心
	 * 
	 * @return
	 */
	List<BudgetCenter> getAll();
	/**
	 * 
	 * @param bcValid 为true表示只查询所有有效的预算中心，为false表示查询所有的记录
	 * @param includeVacation 是否查询假期。
	 * @return
	 */
	List<BudgetCenter> getAll(boolean bcValid, Boolean includeVacation);
	
	/**
	 * 根据负责人查询预算中心
	 * @param userId
	 * @return
	 */
	List<BudgetCenter> findByDuty(Long userId);
	
	/**
	 * 存储一条预算中心记录
	 * 
	 * @param budgetCenter
	 */
	@Transactional
	void save(BudgetCenter budgetCenter);

	/**
	 * 更新
	 * 
	 * @param budgetCenter
	 */
	void update(BudgetCenter budgetCenter);

	/**
	 * 删除指定的预算中心，仅仅将该预算中心置为无效，并非真正的删除
	 * 
	 * @param budgetId
	 */
	boolean delete(int budgetId);
	/**
	 * 根据预算中心的记录ID
	 * @param budgetId
	 * @return
	 */
	BudgetCenter getBudgetById(int budgetId);
	
	/**
	 * 根据预算中心的名称查询
	 * @param budgetName
	 * @return
	 */
	BudgetCenter getBudgetByName(String budgetName);
	
	/**
	 * 根据预算中心的编号查询
	 * @param bcId
	 * @return
	 */
	BudgetCenter getBudgetByBcId(String bcId);
}
